package com.stateflow.facade.common.util;

import com.stateflow.facade.common.enums.CommonErrorEnum;
import com.stateflow.facade.common.exception.CommonException;
import com.stateflow.facade.common.model.res.CommonResult;
import org.springframework.lang.Nullable;
import org.springframework.util.CollectionUtils;

import java.util.Collection;

/**
 * Created by weiqingming on 2019/4/16.
 * 公用的断言工具
 */
public class CommonAssert {

    /**
     * 断言为true
     * @param b
     * @param msg
     */
    public static void isTrue(boolean b, String msg) {
        if (!b) {
            throw new CommonException(msg);
        }
    }

    /**
     * 断言为非空字符串
     * @param str
     * @param msg
     */
    public static void isNoBlankStr(String str, String msg) {
        if (str == null || str.length() == 0) {
            throw new CommonException(msg);
        }
    }


    /**
     * 断言为非空Collection
     * @param collection
     * @param msg
     */
    public static void isNoEmptyCollection(@Nullable Collection<?> collection, String msg) {
        if (CollectionUtils.isEmpty(collection)) {
            throw new CommonException(msg);
        }
    }


    /**
     * 断言为非空且大于0的数字
     * @param num
     * @param msg
     */
    public static void isNoBlankNum(Integer num, String msg) {
        if (num == null || num == 0) {
            throw new CommonException(msg);
        }
    }


    /**
     * 断言为非空且大于0的数字
     * @param num
     * @param msg
     */
    public static void isNoBlankNum(Long num, String msg) {
        if (num == null || num == 0) {
            throw new CommonException(msg);
        }
    }

    /**
     * 断言为非空且大于0的数字
     * @param num
     * @param msg
     */
    public static void isNoBlankNum(Double num, String msg) {
        if (num == null || num == 0) {
            throw new CommonException(msg);
        }
    }


    /**
     * 断言为true
     * @param o
     * @param msg
     */
    public static void isNoEmptyObj(Object o, String msg) {
        if (o == null) {
            throw new CommonException(msg);
        }
    }


    /**
     * 断言为成功
     * @param o
     * @param msg
     */
    public static void isCommonResult(CommonResult o, String msg) {
        if (o == null || !o.getSuccess()) {
            throw new CommonException(msg);
        }
    }


    /**
     * 断言是否注册
     * @param b
     */
    public static void isNoRegister(boolean b) {
        if (!b) {
            throw new CommonException(CommonErrorEnum.NO_REGISTER);
        }
    }
}
